The invention relates to computer networks, especially computer networks having a large number of nodes, for example, up to one hundred, and relates more particularly to networks which automatically reconfigure themselves when hardware modules or software modules are added to or removed from the network.
Various computer networks are known in which multiple individual computers are interconnected and cooperate in various ways with each other. For example, one well known computer network is widely marketed under the trademark ETHERNET. For more general information on computer networks, see the textbook "Computer Networks", by A. S. Tannenbaum, Prentice-Hall, Inc., 1981. Also see U.S. Pat. No. 4,181,936, which represents the closest prior art presently known. Other U.S. patents that generally disclose computer networks include U.S. Pat. Nos. 3,735,365, 4,181,936, 3,753,234, 3,934,232, 3,818,114, 3,710,351, 4,099,233, 4,079,488, 4,110,823, 3,480,914, 3,593,300, 3,629,854, 4,240,140, 4,385,350 and 4,360,869.
One area of growth in the use of computer networks has been in the field of "factory control", i..e., use of computer networks to accomplish control of manufacturing processes and controlling robots in manufacturing operations. Although state-of-the-art microprocessors and microcomputers have quite limited computing power, they nevertheless have sufficient computing power to perform one or more related or unrelated control functions. But they do not have enough computing power to control all related interfaces in the system. In accordance with the concept of computer networking, additional processors or microcomputers are connected to the same bus, i.e., the network system bus, in order to provide computing needed for controlling additional processing operations, robots, etc. In many instances, there is no requirement for the separate processors to be able to communicate with each other, but in other instances, it would be very desirable if they could efficiently communicate with each other.
The prior networking systems have had some serious shortcomings, including the requirement of requiring custom wiring or rewiring of hardware when additional processors or I/O interface boards are added to the system. Furthermore, addition of additional processors and/or "interfaces" has generally required that the software in the computer network also be modified, usually requiring considerable time, effort and expense, in order to allow continued operation of the computer network. In computer networks in which there are a large number (more than four or five) separate processors, bus arbitration systems including complex hardware and software have been required. The amount of time each processor spends "waiting" for access to the network system bus rises rapidly as the number of processors increases. In factory control environments, reliability is of extreme importance for network control systems, since system "down time" can be extremely expensive. Therefore, it is extremely important in factory control computer systems to avoid hardware and software errors that typically accompany expansion or modification of the system. As mentioned above, custom hardware reconfiguration and software modification is usually required and errors frequently occur. For example, strapping switches frequently are improperly reset when new modules are added to the systems. Software modifications and software "modules" added to the system frequently contain errors and need considerable debugging to make the entire system function properly.
In prior network systems in which multiple processors and their associated memories are connected to a common network system bus, a particular processor that requests access to the system bus often has to wait in a "queueing" line, unless there is complex software in a system that maintains that processor's position in the queueing line while it continues another task.
In prior networking systems, every time a new function is added to a new network, every processor in the system needs to know how to obtain acess to the new function. This ordinarily requires modification of all of the software programs already in the system, since each of the local processors in prior systems completely effectuate their own messages.
Indefinite amounts of waiting time for a processor requesting access to the network bus are unacceptable in a real time operating system. In order to avoid this problem, some prior systems, for example, the Intel MULTI-BUS structure, has been used in conjunction with dual port random access memories which isolate the various local processors from the network bus. This technique has the advantage that it eliminates the requirement for a processor initiating a communication and a destination processor to both stop their present tasks and make themselves available in order to accomplish the communication between them, but the initiating processor needs to stop its present task and make itself available until the message is communicated.
A practical limitation of previous networking systems is related to the physical structure of the printed circuit boards and the mother board into which the various boards (including the processors and the interface boards) are plugged. Some manufacturers have provided "piggyback" boards which are plugged into a main processor board, but this is a very clumsy approach and limits the number of interface boards that can be used. Another approach that has been used is to run ribbon cables from connectors on various processor boards to a separate board rack into which interface boards are connected. Again, this has been a clumsy solution. Another approach that has been used is to provide separate "local" buses for the individual processors. But this approach has generally required "custom" wiring when additional interface boards are added to the system, because there has been no practical way of achieving a satisfactory length for the local printed circuit conductors constituting the local buses as additional interface boards are plugged in.
Up to now, no one has ever provided a satisfactory solution of the problems associated with a computer network that needs to be operable on any scale from very small (wherein only one or two processors are required) to very large (where, for example, up to one hundred or more processors are needed). No one has adequately addressed or solved the problems that arise when it is desired to add computing power to a preexisting computer network in which additional computing power is required in such a manner that tasks presently assigned to certain processors need to be shared with the newly added processors, without requiring extensive hardware, and/or especially software modification. Up to now, no one has solved the problems associated with long waiting times by individual local processors that need to transmit messages to other processors when large numbers of local processors are connected to the network and concurrently request access to the system bus.